﻿using System.Collections.Generic;
using MIAP.Entidades;

namespace MIAP.DataAccess.Interfaces
{
    /// <summary>
    /// Interfaz que expone los métodos del dao ActualizaVersionDao.
    /// </summary>
    public interface IActualizaVersionDao
    {
        /// <summary>
        /// Obtiene todos los archivos activos versionables que coincidan con los filtros.
        /// </summary>
        /// <param name="actualizacionVersionFilters">Contien los filtros que serán aplicados en la búsqueda.</param>
        /// <returns>Lista de archivos versionables</returns>
        IList<ActualizacionVersionInfo> GetArchivosVersionables(ActualizacionVersionInfo actualizacionVersionFilters);

        /// <summary>
        /// Modifica la versión válida de un archivo.
        /// </summary>
        /// <param name="actualizacionVersion">Archivo que será modificado.</param>
        /// <param name="user">Usuario que ehecuta la operación.</param>
        void EditVersionValida(ActualizacionVersionInfo actualizacionVersion, string user);

        /// <summary>
        /// Obtiene el autorizador de la recarga del archivo.
        /// </summary>
        /// <param name="listArchivos">Lista de los ids de carga de los archivos y sus versiones.</param>
        /// <returns>Lista con los nombres de los autorizadores.</returns>
        IList<EjecutorInfo> GetAutorizador(List<CatalogoInfo> listArchivos);

        /// <summary>
        /// Obtiene el nombre del versionador de la carga o recarga del archivo.
        /// </summary>
        /// <param name="listArchivos">Lista de archivos versionables.</param>
        /// <returns>Lista de ids de archivos y sus respectivos versionadores.</returns>
        IList<CatalogoInfo> GetNombreVersionador(List<CatalogoInfo> listArchivos);

        /// <summary>
        /// Obtiene el nombre de la versión válida del archivo.
        /// </summary>
        /// <param name="idArchivo">Es el id del archivo del cual se dese obtener la versión válida.</param>
        /// <returns>Nombre de la versión válida del archivo.</returns>
        string GetNombreVersionValidaArchivo(int idArchivo);
    }
}
